package cn.itcast.pattern.singleton;

/**
 * 保证对象是单例的。
 * 保证synchronized只在第一次调用，节省开销。
 * 防止了重排序带来的隐患。
 */
public class LazySingleton {

    private static volatile LazySingleton instance =null;   //保证 instance 在所有线程中同步

    private LazySingleton(){  //私有化构造方法 避免类在外部被实例化

    }


    public  static  LazySingleton getInstance(){  //synchronized 保证 instance 在所有线程中同步
        if(instance==null){
            instance = new LazySingleton();
        }
        return instance;
    }
}
